Many businesses have customers or business partners that they invoice regularly to inform the customers or business partners of amounts that are due for the goods and/or services provided. Payments from customers may come in many forms, from wire transfers, checks, credit card payments and other forms of money transfer. In many such payments, information is provided to help match up the payment with the amounts that are due, which may be referred to as clearing the payments. The amounts due may be referred to as receivables. It can be difficult to precisely match the payments with the receivables because sometimes there is no reference on the check to an invoice number, or the invoice number provided is incorrect. Multiple invoices may be for the same amount, so the amount alone may not be sufficient to match a payment to the invoice. To further complicate matters, different operational units within the business may invoice different operational units within the customer. Still further, many different customers may be invoiced with the same amount. Payments may not even reference the customer in some situations.
While most payments reference an invoice, leading to an easy matching of receivables to payments, some payments are very difficult to clear. With the complexity described above, data base searching has been used in an attempt to match different database fields, such as customer, invoice number, amount due, dates of invoice, etc. Such searching may be performed on a field by field basis, with fixed rules for determining if a payment should be applied to a particular invoice. Even this method has proved insufficient to clear every payment received.